4fa915121bfd043fb4fb0feacf122308d17cb8e1,expandablerecyclerview/src/main/java/com/github/huajianjiang/expandablerecyclerview/widget/ExpandableAdapter.java,ExpandableAdapter,notifyChildItemRangeRemoved,#number#number#number#boolean#,1170
Before Change
int parentAdapterPos = getParentAdapterPosition(parentPosition);
if (parentAdapterPos == RecyclerView.NO_POSITION) return;
ParentWrapper parentWrapper = (ParentWrapper) getItem(parentAdapterPos);
List<?> children = parentWrapper.getChildren();
//注æ„?:这里判æ–当å‰?父列表项是å?¦å·²ç»?打开,å?ªæœ‰æ‰“开更改本地数æ?®ç»“构并通知刷新,å?¦åˆ™ä¼šå‡ºçŽ°æ•°æ?®æ··ä¹±å¼‚常
After Change
int parentAdapterPos = getParentAdapterPosition(parentPosition);
if (parentAdapterPos == RecyclerView.NO_POSITION) return;
ParentWrapper<P, C> parentWrapper = getItem(parentAdapterPos);
//åˆ¤æ–æ˜¯å?¦æ‰€æœ‰çš„ child 都移除了,
boolean allChildRemoved = !parentWrapper.hasChildren();
//注æ„?:这里判æ–当å‰?父列表项是å?¦å·²ç»?打开,å?ªæœ‰æ‰“开更改本地数æ?®ç»“构并通知刷新,å?¦åˆ™ä¼šå‡ºçŽ°æ•°æ?®æ··ä¹±å¼‚常
if (!parentWrapper.isExpanded()) {
//如果å?åˆ—è¡¨é¡¹éƒ½åˆ é™¤äº†ï¼Œé»˜è®¤é€šçŸ¥è¿™äº›åˆ é™¤çš„å?列表项所属的父列表项已å?˜ä¸ºæŠ˜å? 状æ€?
if (allChildRemoved && parentWrapper.setExpandable(false)) {
syncParentExpandableState(parentPosition);
}
return;
}
int childAdapterPosStart = getChildAdapterPosition(parentPosition, childPositionStart);
if (childAdapterPosStart == RecyclerView.NO_POSITION) return;
mItems.removeAll(
mItems.subList(childAdapterPosStart, childAdapterPosStart + childItemCount));
notifyItemRangeRemoved(childAdapterPosStart, childItemCount);
//强制在移除 child 时自动折å? parent
if (forceCollapseParent && !allChildRemoved) {
collapseView(parentPosition, true);
} else {
//如果å?åˆ—è¡¨é¡¹éƒ½åˆ é™¤äº†ï¼Œé»˜è®¤é€šçŸ¥è¿™äº›åˆ é™¤çš„å?列表项所属的父列表项已å?˜ä¸ºæŠ˜å? 状æ€?
if (allChildRemoved) {
if (parentWrapper.setExpandable(false)) {
syncParentExpandableState(parentPosition);
}
parentWrapper.setExpanded(false);
//å?Œæ¥ ParentViewHolder å’Œ ParentWrapper çš„ Parent 展开状æ€?